Modern computing devices have become ubiquitous tools for personal, business, and social uses. A single user may rely on a number of computing devices, mobile or otherwise, over a given period of time. For example, the user may wish to run an application on a desktop computing device while at home, the same application on a smartphone while riding public transportation to work, and the same application again on a laptop at the coffee-house after work. To accomplish such a scenario, the user can migrate the application from one computing device to another. Similarly, in data center environments, administrators may perform application migrations due to data center closures, compromised server security, disaster recovery, network infrastructure upgrades, etc.
Although application migration can be a useful tool, the migration of applications can be difficult because applications are typically developed to run on the platform on which the applications were developed and/or originally deployed on. Additionally, other elements (e.g., operating systems (OSs), management tools, networking architectures, storage systems, virtual machine (VM) configurations, etc.) are typically different between computing environments, further complicating migration efforts. Accordingly, VM technology may be used to migrate such applications. For example, VM technology may be used to wrap the application to be migrated, along with the guest OS in which the application runs, and then the wrapped data representing the state of the VM can be migrated. However, the amount of data associated with such an application migration can be very large. Accordingly, the transmission of such large amounts of data may be slow, especially over wireless network connections. Additionally, the startup time of the migrated VM may be slower than a native VM, giving the appearance that the migrated VM is faulty.